package com.demo.validation.body_validation;

import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

/**
 * @author ayatsuji
 * @date 2021-06-14 00:13
 * @since
 */
@Validated
@RestController
@RequestMapping("body")
public class BodyValidationDemo {

    /*
    接收参数的类Q1需要提供getter和setter方法
    - 没有setter就无法将传参设置进去
    - 没有getter在响应时序列化会报错, org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
     */
    @GetMapping("q1")
    public Q1 q1(Q1 q1) {
        return q1;
    }

    /*
     校验实体按以下步骤：
     方法参数实体加@Validated，在实体上加需要的校验注解即可
     校验失败会抛org.springframework.validation.BindException
     */
    @GetMapping("q2")
    public Q1 q2(@Validated Q1 q1) {
        return q1;
    }

    @DeleteMapping("q3")
    public String q3(@RequestBody Long[] ids) {
        return "q3" + Arrays.toString(ids);
    }

    @PostMapping("q4")
    public String q4(@RequestBody JsonNode param) {
        System.out.println(param);
        return "q4";
    }
}
